<template>
    <h1>VUE3.0学习---watch</h1>
    <div class = "test1">
        <h2>监视ref对象中的多个属性</h2>
        <p>姓名：{{ person.name }}</p>
        <p>姓名：{{ person.age }}</p>
        <p>现居住地：{{ person.addr.nowAdd }}</p>
        <p>原居住地：{{ person.addr.oldAdd }}</p>
        <button @click="changName">修改姓名</button>
        <button @click="changAge">修改年龄</button>
        <button @click="changNowAddr">修改现居住地</button>
        <button @click="changOldAddr">修改原居住地</button>
        <button @click="changAddr">修改整个地址</button>
    </div>
</template>

<script lang="ts" setup>
   import { watch ,ref} from 'vue';
   let person = ref({
        name:"张三",
        age: 18,
        addr:{nowAdd:'北京',oldAdd:'上海'}
    })
   function changName(){
    person.value.name += '~'
   }
   function changAge(){
      person.value.age += 10
   }
   function changNowAddr(){
      person.value.addr.nowAdd += '@'
   }
   function changAddr(){
      person.value.addr = {nowAdd:'太和镇',oldAdd:'小沔镇'}
   }
   function changOldAddr(){
      person.value.addr.oldAdd += '@'
   }
   //监视多个属性
   watch([() => person.value.name,() => person.value.addr],(oldValue,newValue) => {
    console.log(oldValue,newValue)
   })
</script>

<style scoped>
 .test1{
    font-size: 20px;
    color: blue;
    background-color: greenyellow;
    border: 2px solid #007bff; /* 设置边框的宽度和颜色 */
    border-radius: 20px; /* 将四个角变成圆形 */
    width: auto; /* 设置元素的宽度 */
    height: auto; /* 设置元素的高度 */
    padding: 20px;
 }

 button{
    margin: 2px;
 }

</style>